package com.durian.domain.DTO;

import com.durian.enums.OrderStatus;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import lombok.*;

import java.io.Serializable;
import java.util.List;

/**
 * 更新订单 DTO
 *
 * @author Durian
 * @since 2023-12-12
 */
@Data
@Builder
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class ObsOrderUpdateDTO implements Serializable {

    /**
     * 订单id
     */
    @Positive(message = "订单id格式有误")
    @NotNull(message = "订单id不能为空")
    private Long orderId;

    /**
     * 用户id
     */
    @Positive(message = "用户id格式有误")
    @NotNull(message = "用户id不能为空")
    private Long userId;

    /**
     * 收货地址id
     */
    @Positive(message = "收货地址id格式有误")
    @NotNull(message = "收货地址id不能为空")
    private Long addressId;

    /**
     * 订单的书籍集合
     */
    @NotEmpty(message = "书籍不能为空")
    private List<@Valid ObsOrderBookAddDTO> bookList;

    /**
     * 订单状态(已完成：1，未完成：0，已支付：2，待支付：3)
     */
    @NotNull(message = "订单状态不能为空")
    private OrderStatus orderStatus;

}
